package interfacciaComunicazione;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.Vector;

import eccezioni.DinosauriInEccessoException;

import server.Classifica;
import server.Giocatore;
import server.GiocatoreOnline;
import server.ambienteGioco.Mappa;
import server.dinosauri.Dinosauro;

/**
 * Comprende i metodi che deve implementare il server, ossia <code>GestoreGioco</code>
 */
public interface InterfacciaServer extends Remote {
	
	// Comandi fuori partita
	public boolean creaUtente(String username, String password) throws RemoteException;//RMI & Socket
	public void login(Giocatore giocatore, String username, String password) throws RemoteException;
	public int login(String username, String password) throws RemoteException;//RMI
	public boolean logout(int token) throws RemoteException;//RMI
	public boolean entraInPartita(int token) throws RemoteException;//RMI
	public boolean esciDallaPartita(int token) throws RemoteException;//RMI
	public void aggiungiGiocatoreInPartita(GiocatoreOnline giocatoreOnline) throws RemoteException;
	
	public Vector<GiocatoreOnline> getGiocatoriLoggati() throws RemoteException;
	public Vector<GiocatoreOnline> getGiocatoriInPartita() throws RemoteException;
	public Classifica getClassifica() throws RemoteException;
	public String classifica(int token)throws RemoteException;
	
	//Comandi in partita (informazioni)
	public Mappa getMappa() throws RemoteException;
	public boolean caricaSpecie(int token, String specieDaUtilizzare, char tipologia) throws RemoteException;//RMI
	
	public void salvaPartita() throws RemoteException;
	public void caricaPartita() throws RemoteException;
	
	public String caricaVisuale(int token) throws RemoteException;//RMI
	public Giocatore usernameEsistente(String username) throws RemoteException;//RMI
	public String infoDinosauro(int r, int c, int token) throws RemoteException;//RMI
	public String elencoGiocatori(int token) throws RemoteException;
	public int deponiUovo(int riga, int col, int token) throws RemoteException, DinosauriInEccessoException;//RMI
	
	public int confermaTurno(int token) throws RemoteException;//RMI
	public int passaTurno(int token) throws RemoteException;//RMI
	public int cresci(int riga, int col, int token) throws RemoteException;
	public int muovi (int riga, int col,int destX,int destY, int token) throws RemoteException;//RMI
	public boolean muovi(Dinosauro dinosauro, int x, int y) throws RemoteException;//RMI
	public String caricaMappaGenerale(int token) throws RemoteException;//RMI
	public String infoVegetazione(int r, int c, int token) throws RemoteException;
	public String infoCarogna(int r, int c, int token) throws RemoteException;
}


